package unit03.day05;

import java.util.HashMap;
import java.util.Map;

/**
 * java.util.Map
 * Map看起来像是一个多行两列的表格
 * 以key-value对的形式存放元素
 * 在Map中key不允许重复(重复是依靠key的equals判断)
 * 常用的实现类为：HashMap
 * */
public class MapDemo1 {

	public static void main(String[] args) {
		Map<String,Integer> map = new HashMap<String,Integer>();
		/**
		 * V put(K k, V v)
		 * 将给定的key-value对存入Map
		 * 由于Map要求key不能重复，所以使用Map已有的key存入一个新的value时的操作是
		 * 替换value，那么返回值为该key原来对应的value
		 * 若是一个新的key，则返回null
		 * */
		//2.这里会报空指针异常，因为Integer类型执行了自动拆装箱操作, 因为是这个导致的null.IntValue()
//		int val = map.put("语文",98);
		Integer val = map.put("语文",98);
		System.out.println(val);
		map.put("数学",98);
		map.put("英语",97);
		map.put("物理",96);
		map.put("化学",95);
		System.out.println(map);
		//1.这里不要直接给int类型，可能会报空指针异常
		val = map.put("化学",55);
		System.out.println(map);
		System.out.println(val);
		
		/**
		 * V get(K k)
		 * 根据给定的key获取对应的value，若当前Map中没有给定的key，则返回null
		 * 所以接收变量类型要给引用类型
		 * */
		val = map.get("数学");
		System.out.println(val);
		//如果获取一个没有的key对应的值，则空指针异常
//		int value = map.get("体育");
		
		/**
		 * V remove(K k)
		 * 移出key和对应的value
		 * */
		Integer value1 = map.remove("化学");
		System.out.println(map);
		System.out.println(value1);
	}

}
